
// 函数
// 函数声明
// export function add(x: number, y: number): number {
// 	return x + y
// }

// add(2, 1)

// 函数表达式
// 变量声明：类型 = 值

// const add1: () => void = () => {
// 	console.log(123)
// }

// add1()

// 函数重载
// export function add(x: number, y: number, z?: number): number {
// 	if (z) return x + y + z
// 	else return x + y
// }

// add(1, 2)
// add(1, 2, 3)

export interface Inter {
	left: string
	right: string
	top: string
	bottom: string
}

// 函数重载
function assign(left: string): Inter
function assign(left: string, top: string): Inter
function assign(left: string, top: string, right: string, bottom: string): Inter

// 函数声明
function assign(left: string, top?: string, right?: string, bottom?: string) {
	if (top === undefined && right === undefined && bottom === undefined) {
		top = right = bottom = left
	} else if (right === undefined && bottom === undefined) {
		right = left
		bottom = top
	}
	return {
		left,
		right,
		top,
		bottom
	}
}
const result1 = assign('a', 'b', 'c', 'd')
const result2 = assign('a', 'b')
const result3 = assign('a')
